﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DTO;
using AutoMapper;
using System.Data;

namespace Data
{
  public  class HoaDonBanSachRepository
    {
      private static HoaDonBanSachDTO MapHoaDonBanSachEFToHoaDonBanSachDTO(HOADONBANSACH hoadonbansachEF)
      {
          Mapper.CreateMap<HOADONBANSACH, HoaDonBanSachDTO>();
          return Mapper.Map<HOADONBANSACH, HoaDonBanSachDTO>(hoadonbansachEF);
      }
      private static HOADONBANSACH MapHoaDonBanSachDTOToHoaDonBanSachEF(HoaDonBanSachDTO hoadonbansachDTO)
      {
          Mapper.CreateMap<HoaDonBanSachDTO, HOADONBANSACH>();
          return Mapper.Map<HoaDonBanSachDTO, HOADONBANSACH>(hoadonbansachDTO);
      }
      public static List<HoaDonBanSachDTO> GetAllHoaDonBanSach()
      {
          List<HoaDonBanSachDTO> list = new List<HoaDonBanSachDTO>();
          using (QuanLyNhaSachEntities context = new QuanLyNhaSachEntities())
          {
              try
              {
                  var query = from hoadonbansach in context.HOADONBANSACHList
                              select hoadonbansach;
                  foreach (var hoadonbansachEF in query)
                  {
                      HoaDonBanSachDTO hoadonbansachDTO = MapHoaDonBanSachEFToHoaDonBanSachDTO(hoadonbansachEF);
                      list.Add(hoadonbansachDTO);
                  }
              }
              catch(Exception)
              {

              }
          }
          return list;
      }
      public void Insert(HoaDonBanSachDTO hoadonbansachDTO)
      {
          using (QuanLyNhaSachEntities context = new QuanLyNhaSachEntities())
          {
              try
              {
                  HOADONBANSACH hoadonbansachEF =new HOADONBANSACH();
                  hoadonbansachEF  = MapHoaDonBanSachDTOToHoaDonBanSachEF(hoadonbansachDTO);
                  context.AddToHOADONBANSACHList(hoadonbansachEF);
                  context.SaveChanges();
              }
              catch(Exception)
              {

              }
          }
      }
      public void Update(HoaDonBanSachDTO hoadonbansachDTO)
      {
          using (QuanLyNhaSachEntities context = new QuanLyNhaSachEntities())
          {
              try
              {
                  EntityKey key = context.CreateEntityKey("HOADONBANSACHList", new HOADONBANSACH { MaHoaDon = hoadonbansachDTO.MaHoaDon });
                  HOADONBANSACH orighoadonbansach = context.GetObjectByKey(key) as HOADONBANSACH;
                  context.Detach(orighoadonbansach);
                  context.Attach(orighoadonbansach);
                  HOADONBANSACH updatehoadonbansach = MapHoaDonBanSachDTOToHoaDonBanSachEF(hoadonbansachDTO);
                  context.ApplyCurrentValues<HOADONBANSACH>("HOADONBANSACHList", updatehoadonbansach);
                  context.SaveChanges();
              }
              catch(Exception)
              {

              }
          }
      }
    }
}
